﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;

namespace Csla
{
    /// <summary>
    /// 一个元素集合
    /// 
    /// 整合两套不同的模式：ITreeNodeCollection和IOrderedObjectCollection
    /// </summary>
    public interface IOrderedTreeNodeCollection :
        ITreeNodeCollection,
        IOrderedObjectCollection,
        IList
    {
        /// <summary>
        /// 按照树的顺序重新给OrderNo赋值
        /// 这里对每个根节点使用深度遍历设置OrderNo。
        /// </summary>
        void SetOrderNoByTree();
        /// <summary>
        /// 保证 逻辑Index、物理Index 相等。
        /// 并且和树的递归顺序是一样的
        /// </summary>
        void EnsureIndices();
    }
    public interface IOrderedTreeNodeCollection<T> :
        IOrderedTreeNodeCollection,
        ITreeNodeCollection<T>,
        IOrderedObjectCollection<T>,
        IList<T>
        where T : IOrderedObject, ITreeNode
    {
    }
}